Speichern und Abrufen von XML-Daten in Sybase mit Java-Custom-Klassen

In diesem Artikel werden wir uns Sybase Adaptive Server Enterprise (ASE) 12.5 und dessen verschiedene Methoden zur Speicherung und Verarbeitung von XML-Daten ansehen. Außerdem werden wir die OrderXml-Muster-Java-Custom-Klasse (eine Unterklasse der JXml-Standardklasse) diskutieren, die in ASE 12.5 enthalten ist.

Niemand möchte zwar die Hochleistungsspeicherung und die SQL-Abfrage-Engines missen, über die proprietäre Enterprise-Datenbankprodukte verfügen, doch die Möglichkeit zum offenen Datenaustausch in einem HTTP-freundlichen Textformat zwischen einzelnen Anwendungen macht XML sehr beliebt. In diesem Artikel werden wir uns Sybase Adaptive Server Enterprise (ASE) 12.5 und dessen verschiedene Methoden zur Speicherung und Verarbeitung von XML-Daten ansehen. Außerdem werden wir die OrderXml-Muster-Java-Custom-Klasse (eine Unterklasse der JXml-Standardklasse) diskutieren, die in ASE 12.5 enthalten ist.


Finden des Quellcode
Der Quellcode und Javadoc für die in diesem Artikel benutzte OrderXml-Klasse ist (in Abhängigkeit von Ihrer Plattform) in folgenden Sybase Server-Verzeichnissen zu finden:
UNIX: $SYBASE/ASE-12_5/sample/JavaSql
Windows NT: %SYBASE%ASE-12_5sampleJavaSql


Einbindung von XML in Sybase ASE
Die meisten großen Datenbank-Anbieter haben zwar bedeutende Schritte unternommen, um XML über grundlegende Erweiterungen in SQL-Anweisungen und serverseitige Vorlagen zu implementieren, doch Sybase hat in seinem Flaggschiff-Produkt einen weit konsequenteren Schritt in Richtung XML unternommen. Sybase ASE hat eine leistungsfähige serverseitige Java VM.

Zu den leistungsfähigsten XML-Verarbeitungsfunktionen von ASE gehört die Fähigkeit, eigene Java-Custom-Klassen zu benutzen. Sie können die Methoden dieser Klassen benutzen, um Daten aus XML-Dokumenten zu extrahieren und sie als normale SQL-Datentypen zu speichern oder sogar die Methoden selbst als Datentypen für Spalten in SQL-Tabellen benutzen. Diese Java Custom Class-Datentypen können Methoden haben, um Elemente aus den gespeicherten XML-Dokumenten nach Bedarf zu validieren, zu extrahieren sowie zu aktualisieren, hinzuzufügen oder zu löschen. Diese Klassen können sogar SQL-Tabellen anlegen und mit verschiedenartigen, aus dem XML-Dokument extrahierten Elementen ausfüllen, damit diese von herkömmlichen, nicht XML-fähigen Anwendungen benutzt werden können.

Speicherung von XML
Sybase ASE kann XML-Daten auf dreierlei Art speichern: Element-Speicherung, Dokument-Speicherung und Hybrid-Speicherung (eine Kombination aus der Element- und der Dokument-Methode).

Für die Zwecke dieser Diskussion werden wir als Muster das folgende OrderXml-Dokument benutzen:


<?xml version="1.0"?><Order>
<Date>1999/07/04</Date>
<CustomerId>123</CustomerId>
<CustomerName>Acme Alpha</CustomerName>
<Item>
<ItemId> 987</ItemId>
<ItemName>Coupler</ItemName>
<Quantity>5</Quantity>
</Item>
<Item>
<ItemId>654</ItemId>
<ItemName>Connector</ItemName>
<Quantity unit="12">3</Quantity>
</Item>
<Item>
<ItemId>579</ItemId>
<ItemName>Clasp</ItemName>
<Quantity>1</Quantity>
</Item>
</Order>

Das folgende SQL legt die Tabellen an, die mit den Musterdaten benutzt werden sollen:


create table orders
(customer_id varchar(5) not null,
order_date datetime not null,
item_id varchar(5) not null,
quantity int not null,
unit smallint default 1)
create table customers
(customer_id varchar(5) not null unique,
customer_name varchar(50) not null)
create table items
(item_id varchar(5) unique,
item_name varchar(20))

Das Standard-SQL zum Ausfüllen der Auftragsorder-Tabellen würde folgendermaßen aussehen:


insert into customers values("123", "Acme Alpha")

insert into orders values ("123", "2002/05/07", "987", 5, 1) insert into orders values ("123", "2002/05/07", "654", 3, 12) insert into orders values ("123", "2002/05/07", "579", 1, 1)

insert into items values ("987", "Widget") insert into items values ("654", "Medium connector") insert into items values ("579", "Type 3 clasp")

Das folgende SQL wählt die Daten aus der Datenbank aus, wenn sie gespeichert worden sind:


select order_date as Date, c.customer_id as CustomerId,
customer_name as CustomerName,
o.item_id as ItemId, i.item_name as ItemName,
quantity as Quantity, o.unit as unit
from customers c, orders o, items I
where c.customer_id=o.customer_id and
o.item_id=i.item_id

Die Ausgabe sieht in etwa so aus wie das, was Sie in dieser Tabelle sehen:

Date July 4 1999 July 4 1999 July 4 1999
CustomerID 123 123 123
CustomerName Acme Alpha Acme Alpha Acme Alpha
ItemId 987 654 579
ItemName Coupler Connector Clasp
Quantity 5 3 1
Unit 1 12 1

SQL-Ausgabe
Als Nächstes wollen wir uns Beispiele für die Speichermethoden und -techniken ansehen, um eine Tabelle current_orders anzulegen, die anstelle der oben angelegten und ausgefüllten Tabelle orders benutzt werden soll.

Themenseiten: Big Data, Datenbank, Software

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu Speichern und Abrufen von XML-Daten in Sybase mit Java-Custom-Klassen

Kommentar hinzufügen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *